package gitlet;

import javax.swing.JPanel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import java.awt.BorderLayout;
import java.io.File;

/**
 * @author 陈恒康
 * @Description FileListPanel类是JPanel的子类，用于创建一个显示文件列表的面板。这个面板包含一个滚动面板，滚动面板中包含一个JList来显示文件。
 * @date 2023/12/16
 */
public class FileListPanel extends JPanel {

    /**
     * @param directoryPath 文件的目录路径
     * @param repo          与文件列表相关联的仓库对象
     * @Description 构造一个新的FileListPanel对象。该对象包含一个滚动面板，滚动面板中包含一个JList来显示文件。文件是从指定的目录中获取的。
     * @author 陈恒康
     * @date 2023/12/16
     */
    public FileListPanel(String directoryPath, Repository repo) {
        this.setSize(600, 200);
        // 获取文件夹下的所有文件
        File directory = new File(directoryPath);
        File[] tempFiles = directory.listFiles();
        File[] files = new File[0];
        if (tempFiles != null) {
            files = new File[tempFiles.length];
        }
        if (tempFiles != null) {
            for (int i = 0, ii = 0; i < tempFiles.length; i++) {
                if (tempFiles[i].isFile()) {
                    files[ii] = tempFiles[i];
                    ii++;
                }
            }
        }
        // 创建一个JList来显示文件
        JList<File> fileList = new JList<>(files);
        // 创建一个滚动面板来包含JList
        JScrollPane scrollPane = new JScrollPane(fileList);
        JPanel addPanel = new JPanel();
        addPanel.setLayout(new BorderLayout());
        this.setLayout(new BorderLayout());
        // 添加滚动面板到这个面板
        this.add(addPanel, BorderLayout.SOUTH);
        this.add(scrollPane);
    }
}